package com.ruoyi.pack.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 器具对象 pack_container
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public class PackContainer extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 器具ID */
    private Long containerId;

    /** 器具流水编号 */
    @Excel(name = "器具流水编号")
    private String containerCode;

    /** 器具型号编码 */
    @Excel(name = "器具型号编码")
    private String materialCode;

    /** 器具型号名称 */
    @Excel(name = "器具型号名称")
    private String materialName;

    /** 器具归属公司ID */
    @Excel(name = "器具归属公司ID")
    private Long companyId;

    /** 生产日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date productionDate;

    /** 当前绑定定位器ID */
    @Excel(name = "当前绑定定位器ID")
    private Long locatorId;

    /** 当前所在仓库ID */
    @Excel(name = "当前所在仓库ID")
    private Long currentWarehouseId;

    /** 位置状态（1-在库 2-在途） */
    @Excel(name = "位置状态", readConverterExp = "1=在库,2=在途")
    private String locationStatus;

    /** 业务状态（1-正常 2-封存 3-维修 4-报废） */
    @Excel(name = "业务状态", readConverterExp = "1=正常,2=封存,3=维修,4=报废")
    private String businessStatus;

    /** 装箱状态（1-空箱 2-满箱） */
    @Excel(name = "装箱状态", readConverterExp = "1=空箱,2=满箱")
    private String packingStatus;

    /** 最后装箱时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最后装箱时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date lastPackingTime;

    /** 最后拆箱时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最后拆箱时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date lastUnpackingTime;

    /** 当前项目ID */
    @Excel(name = "当前项目ID")
    private Long currentProjectId;

    /** 当前项目编码 */
    @Excel(name = "当前项目编码")
    private String currentProjectCode;

    /** 当前项目名称 */
    @Excel(name = "当前项目名称")
    private String currentProjectName;

    /** 当前装载物料编码 */
    @Excel(name = "当前装载物料编码")
    private String currentMaterialCode;

    /** 当前装载物料名称 */
    @Excel(name = "当前装载物料名称")
    private String currentMaterialName;

    /** 当前装载物料数量 */
    @Excel(name = "当前装载物料数量")
    private BigDecimal currentMaterialQuantity;

    /** 当前内衬方案 */
    @Excel(name = "当前内衬方案")
    private String currentLiningScheme;

    /** 最后上报纬度 */
    @Excel(name = "最后上报纬度")
    private BigDecimal lastLatitude;

    /** 最后上报经度 */
    @Excel(name = "最后上报经度")
    private BigDecimal lastLongitude;

    /** 最后上报时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最后上报时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date lastUploadTime;

    /** 最后上传日志ID */
    @Excel(name = "最后上传日志ID")
    private Long lastLocationLogId;

    /** 最后上报省份 */
    @Excel(name = "最后上报省份")
    private String lastProvince;

    /** 最后上报城市 */
    @Excel(name = "最后上报城市")
    private String lastCity;

    /** 最后上报区县 */
    @Excel(name = "最后上报区县")
    private String lastDistrict;

    /** 最后上报详细地址 */
    @Excel(name = "最后上报详细地址")
    private String lastAddress;

    /** 当前仓库名称（用于显示） */
    private String currentWarehouseName;

    /** 定位器编码（用于显示） */
    private String locatorCode;

    /** 定位器对象 */
    private PackLocator locator;

    /** 仓库对象 */
    private PackWarehouse warehouse;

    /** 项目对象 */
    private PackProject project;
    
    /** 绑定的定位器信息 */
    private PackLocator boundLocator;

    /** 项目类型（用于库房汇总查询，container-器具，material-物料） */
    private String itemType;

    public void setContainerId(Long containerId) 
    {
        this.containerId = containerId;
    }

    public Long getContainerId() 
    {
        return containerId;
    }
    public void setContainerCode(String containerCode) 
    {
        this.containerCode = containerCode;
    }

    public String getContainerCode() 
    {
        return containerCode;
    }
    public void setMaterialCode(String materialCode) 
    {
        this.materialCode = materialCode;
    }

    public String getMaterialCode() 
    {
        return materialCode;
    }
    public void setMaterialName(String materialName) 
    {
        this.materialName = materialName;
    }

    public String getMaterialName() 
    {
        return materialName;
    }
    public void setCompanyId(Long companyId) 
    {
        this.companyId = companyId;
    }

    public Long getCompanyId() 
    {
        return companyId;
    }
    public void setProductionDate(Date productionDate) 
    {
        this.productionDate = productionDate;
    }

    public Date getProductionDate() 
    {
        return productionDate;
    }
    public void setLocatorId(Long locatorId) 
    {
        this.locatorId = locatorId;
    }

    public Long getLocatorId() 
    {
        return locatorId;
    }
    public void setCurrentWarehouseId(Long currentWarehouseId) 
    {
        this.currentWarehouseId = currentWarehouseId;
    }

    public Long getCurrentWarehouseId() 
    {
        return currentWarehouseId;
    }
    public void setLocationStatus(String locationStatus) 
    {
        this.locationStatus = locationStatus;
    }

    public String getLocationStatus() 
    {
        return locationStatus;
    }
    public void setBusinessStatus(String businessStatus) 
    {
        this.businessStatus = businessStatus;
    }

    public String getBusinessStatus() 
    {
        return businessStatus;
    }
    public void setPackingStatus(String packingStatus) 
    {
        this.packingStatus = packingStatus;
    }

    public String getPackingStatus() 
    {
        return packingStatus;
    }
    public void setLastPackingTime(Date lastPackingTime) 
    {
        this.lastPackingTime = lastPackingTime;
    }

    public Date getLastPackingTime() 
    {
        return lastPackingTime;
    }
    public void setLastUnpackingTime(Date lastUnpackingTime) 
    {
        this.lastUnpackingTime = lastUnpackingTime;
    }

    public Date getLastUnpackingTime() 
    {
        return lastUnpackingTime;
    }
    public void setCurrentProjectId(Long currentProjectId) 
    {
        this.currentProjectId = currentProjectId;
    }

    public Long getCurrentProjectId() 
    {
        return currentProjectId;
    }
    public void setCurrentProjectCode(String currentProjectCode) 
    {
        this.currentProjectCode = currentProjectCode;
    }

    public String getCurrentProjectCode() 
    {
        return currentProjectCode;
    }
    public void setCurrentProjectName(String currentProjectName) 
    {
        this.currentProjectName = currentProjectName;
    }

    public String getCurrentProjectName() 
    {
        return currentProjectName;
    }
    public void setCurrentMaterialCode(String currentMaterialCode) 
    {
        this.currentMaterialCode = currentMaterialCode;
    }

    public String getCurrentMaterialCode() 
    {
        return currentMaterialCode;
    }
    public void setCurrentMaterialName(String currentMaterialName) 
    {
        this.currentMaterialName = currentMaterialName;
    }

    public String getCurrentMaterialName() 
    {
        return currentMaterialName;
    }
    public void setCurrentMaterialQuantity(BigDecimal currentMaterialQuantity) 
    {
        this.currentMaterialQuantity = currentMaterialQuantity;
    }

    public BigDecimal getCurrentMaterialQuantity() 
    {
        return currentMaterialQuantity;
    }
    public void setCurrentLiningScheme(String currentLiningScheme) 
    {
        this.currentLiningScheme = currentLiningScheme;
    }

    public String getCurrentLiningScheme() 
    {
        return currentLiningScheme;
    }
    public void setLastLatitude(BigDecimal lastLatitude) 
    {
        this.lastLatitude = lastLatitude;
    }

    public BigDecimal getLastLatitude() 
    {
        return lastLatitude;
    }
    public void setLastLongitude(BigDecimal lastLongitude) 
    {
        this.lastLongitude = lastLongitude;
    }

    public BigDecimal getLastLongitude() 
    {
        return lastLongitude;
    }
    public void setLastUploadTime(Date lastUploadTime) 
    {
        this.lastUploadTime = lastUploadTime;
    }

    public Date getLastUploadTime() 
    {
        return lastUploadTime;
    }
    public void setLastLocationLogId(Long lastLocationLogId) 
    {
        this.lastLocationLogId = lastLocationLogId;
    }

    public Long getLastLocationLogId() 
    {
        return lastLocationLogId;
    }
    public void setLastProvince(String lastProvince) 
    {
        this.lastProvince = lastProvince;
    }

    public String getLastProvince() 
    {
        return lastProvince;
    }
    public void setLastCity(String lastCity) 
    {
        this.lastCity = lastCity;
    }

    public String getLastCity() 
    {
        return lastCity;
    }
    public void setLastDistrict(String lastDistrict) 
    {
        this.lastDistrict = lastDistrict;
    }

    public String getLastDistrict() 
    {
        return lastDistrict;
    }
    public void setLastAddress(String lastAddress) 
    {
        this.lastAddress = lastAddress;
    }

    public String getLastAddress() 
    {
        return lastAddress;
    }

    public String getCurrentWarehouseName() 
    {
        return currentWarehouseName;
    }

    public void setCurrentWarehouseName(String currentWarehouseName) 
    {
        this.currentWarehouseName = currentWarehouseName;
    }

    public String getLocatorCode() 
    {
        return locatorCode;
    }

    public void setLocatorCode(String locatorCode) 
    {
        this.locatorCode = locatorCode;
    }

    public PackLocator getLocator() 
    {
        return locator;
    }

    public void setLocator(PackLocator locator) 
    {
        this.locator = locator;
    }

    public PackWarehouse getWarehouse() 
    {
        return warehouse;
    }

    public void setWarehouse(PackWarehouse warehouse) 
    {
        this.warehouse = warehouse;
    }

    public PackProject getProject() 
    {
        return project;
    }

    public void setProject(PackProject project) 
    {
        this.project = project;
    }
    
    public PackLocator getBoundLocator() 
    {
        return boundLocator;
    }

    public void setBoundLocator(PackLocator boundLocator)
    {
        this.boundLocator = boundLocator;
    }

    public String getItemType()
    {
        return itemType;
    }

    public void setItemType(String itemType)
    {
        this.itemType = itemType;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("containerId", getContainerId())
            .append("containerCode", getContainerCode())
            .append("materialCode", getMaterialCode())
            .append("materialName", getMaterialName())
            .append("companyId", getCompanyId())
            .append("productionDate", getProductionDate())
            .append("locatorId", getLocatorId())
            .append("currentWarehouseId", getCurrentWarehouseId())
            .append("locationStatus", getLocationStatus())
            .append("businessStatus", getBusinessStatus())
            .append("packingStatus", getPackingStatus())
            .append("lastPackingTime", getLastPackingTime())
            .append("lastUnpackingTime", getLastUnpackingTime())
            .append("currentProjectId", getCurrentProjectId())
            .append("currentProjectCode", getCurrentProjectCode())
            .append("currentProjectName", getCurrentProjectName())
            .append("currentMaterialCode", getCurrentMaterialCode())
            .append("currentMaterialName", getCurrentMaterialName())
            .append("currentMaterialQuantity", getCurrentMaterialQuantity())
            .append("currentLiningScheme", getCurrentLiningScheme())
            .append("lastLatitude", getLastLatitude())
            .append("lastLongitude", getLastLongitude())
            .append("lastUploadTime", getLastUploadTime())
            .append("lastLocationLogId", getLastLocationLogId())
            .append("lastProvince", getLastProvince())
            .append("lastCity", getLastCity())
            .append("lastDistrict", getLastDistrict())
            .append("lastAddress", getLastAddress())
            .append("currentWarehouseName", getCurrentWarehouseName())
            .append("locatorCode", getLocatorCode())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
} 